Software and hardware description languages are described by a set of rules or “productions” that define the syntax and grammar of the language. The rules are usually expressed in Backus-Naur form (BNF). The rules consist of a list of productions which describe the language. Developers of language tools (hardware and/or software) need to ensure the tools they are developing are fully tested under all conditions possible. For example, compilers and synthesizers need to be adequately tested to ensure that code is correctly compiled or synthesized and that the desired features of the language are fully supported.
A number of test programs may be constructed with the goal of covering all of the productions in as much depth as is practical. Generally, test programs can be constructed to test all of the productions, at least to some degree. However, to test all possible different code sequences derivable from a production may not practical if a very large number of code sequences are derivable from the production. Thus, determining whether a tool has been adequately tested with a given set of test programs may be difficult.
A system and method that address the aforementioned problems, as well as other related problems, are therefore desirable.